UTF

您所在的位置:网站首页 utf8 和gbk UTF

UTF

2023-03-24 10:55| 来源: 网络整理| 查看: 265

在UTF-8编码里面存在一个特殊的字符,其编码是“0xC2 0xA0”,转换成字符的时候表现为一个半角空格,跟一般的半角空格(ASCII 0x20)不同的是它的宽度不会被压缩,所以排版中常能用到它。但是GB2312、Unicode之类并没有这样的字符,所以转换后会显示为“?”号,只是显示为问号而不是真正的问号,所以无法被替换。 这时需要在UTF-8的字符串中替换掉该字符即可,在java中的用法如下:

byte[] utfspace = new byte[] { (byte)0xc2, (byte)0xa0 }; String UTFSpace=new String(utfspace,"UTF-8"); intro=intro.replace(UTFSpace, " ");

上面说的只是空格,还有老外的名字中翻译后经常出现的中间点号,等等

Unicode字符集现在有超过10万个字符,其BMP部分也有六万多个字符;而GBK字符集只有 两万以前多个字符。这样的话,从支持unicode字符集或者unicode字符集BMP的编码方式,转化到GBK编码的时候,就会有编码落到GBK字符 集以外,不能转化成GBK编码。在java中,转换之后的字符串,这部分字符都变成了’?’。

通常这些都是非常生僻的字符,倒是可以不考虑;但是有一个特殊的unicode字符,不在GBK字符集中。却频繁用于xml/html等格式的文件中。这个字符unicode序号为 0xA0,utf-8编码结果为C2A0,作用是一个排版空格——普通的ascii空格在xml/html中是被忽略的。大量UTF-编码的网页使用这个 字符用作占位的空格。而且似乎浏览器对它的处理方式也不同:IE8浏览器会认得这个空格,firefox3.6简单的把它替换成 。当 把一个utf-8编码的网页转成gbk编码时,这个字符就变成讨厌的问号了。

处理方法,就是在字符串以GBK编码写出之前,把这个字符替换掉:

彻底而保险的方法是过滤所有GBK不能表示的字符:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3